﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace QL_Nha_Sach_Phuong_Nam
{
    public partial class FormBanHang : Form
    {
        CXuLySachKho XulySach_kho;
        CXulyHoaDon xuly_hoadon;
        List<TonKho> ListSachTrungBay;
        List<Sach> ListSach;

        public FormBanHang()
        {
            InitializeComponent();
        }

        //Hàm load dữ liệu lên form
        private void FormBanHang_Load(object sender, EventArgs e)
        {
            XulySach_kho = new CXuLySachKho();
            xuly_hoadon = new CXulyHoaDon();
            ListSach = new List<Sach>();

            ListSachTrungBay = XulySach_kho.getdsSachTrungBay();

            foreach (TonKho ton in ListSachTrungBay)
            {
                ListSach.Add(ton.Sach);
            }
        }

        #region Các hàm chức năng

        //Tìm sách trong ListSách
        private Sach TimSach(string ma)
        {
            Sach sach = new Sach();
            sach = null;
            foreach (Sach s in ListSach)
            {
                if (s.SachNo == ma)
                {
                    sach = s;
                    break;
                }
            }
            return sach;
        }

        //Tính thành tiền và tổng thành tiền rồi hiển thị lên giao diện
        private void TinhTien(int RowIndex)
        {
            double sum = 0;
            int i = int.Parse(dgvChiTietHoaDon.Rows[RowIndex].Cells[2].Value.ToString());
            double d = double.Parse(dgvChiTietHoaDon.Rows[RowIndex].Cells[3].Value.ToString());
            dgvChiTietHoaDon.Rows[RowIndex].Cells[4].Value = i * d;
            foreach (DataGridViewRow r in dgvChiTietHoaDon.Rows)
            {
                if (r.IsNewRow)
                    continue;
                sum += double.Parse(r.Cells[4].Value.ToString());
            }
            txtTong.Text = sum.ToString();
            txtPay.Text = sum.ToString();
        }

        private void addSach_dgv (Sach sach)
        {
            int i = dgvChiTietHoaDon.Rows.Add();
            dgvChiTietHoaDon.Rows[i].Cells[0].Value = sach.SachNo;
            dgvChiTietHoaDon.Rows[i].Cells[1].Value = sach.SachName;
            dgvChiTietHoaDon.Rows[i].Cells[2].Value = "1";
            dgvChiTietHoaDon.Rows[i].Cells[3].Value = sach.SachPrice;
            TinhTien(i);
        }

        //Hàm tạo mã cho hóa đơn
        private string taoma(int ID)
        {
            string ma = "HD";
            ma += Convert.ToString(DateTime.Now.Day);
            ma += Convert.ToString(DateTime.Now.Date).Substring(3, 2);
            ma += Convert.ToString(DateTime.Now.Year).Substring(2, 2);
            ma += ID.ToString();
            return ma;
        }

        private void lammoi()
        {
            dgvChiTietHoaDon.Rows.Clear();
            txtTong.Text = "0";
            txtGive.Text = "0";
            txtPay.Text = "0";
            txtReturn.Text = "0";
        }

        #endregion

        #region các hàm xử lý control

        private void btnRefresh_Click(object sender, EventArgs e)
        {
            lammoi();
        }

        //Hàm thêm hóa đon
        private void btnLapHoaDon_Click(object sender, EventArgs e)
        {
            HoaDon hd = new HoaDon();
            if (xuly_hoadon.getdsHoaDon().Count < 1)
                hd.HoaDonID = 1;
            else hd.HoaDonID = xuly_hoadon.getdsHoaDon().Last().HoaDonID + 1;
            hd.HoaDonNo = taoma(hd.HoaDonID);
            hd.HoaDonDate = DateTime.Now;
            foreach (DataGridViewRow r in dgvChiTietHoaDon.Rows)
            {
                if (r.IsNewRow)
                    continue;
                ChiTietHoaDon cthd = new ChiTietHoaDon();
                cthd.ChiTietHoaDonQuantum = int.Parse(r.Cells[2].Value.ToString());
                cthd.ChiTietHoaDonTotal = double.Parse(txtTong.Text);
                cthd.Sach = TimSach(r.Cells[0].Value.ToString());
                hd.ChiTietHoaDons.Add(cthd);
            }
            xuly_hoadon.ThemHoaDon(hd);
            lammoi();
        }

        //Bắt sự kiện sau khi kết thúc nhập dữ liệu trong 1 ô
        private void dgvChiTietHoaDon_CellValidated(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex != dgvChiTietHoaDon.RowCount - 1)
            {
                TinhTien(e.RowIndex);
            }
        }

        //Hàm thêm sách vào hóa đơn
        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (TimSach(txtMaSach.Text) != null)
            {
                if (txtMaSach.Text == "")
                    return;
                Sach sach = TimSach(txtMaSach.Text);
                addSach_dgv(sach);
                txtMaSach.Text = "";
            }
            else MessageBox.Show("Không tồn tại sách này !");
        }

        //Sự kiện kiểm tra ký tự nhập vào, chỉ cho phép nhập ký tự là số
        private void txtGive_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) )
            {
                e.Handled = true;
            }
        }

        //Xử lý sự kiện khi thay đổi ký tự trong textbox
        private void txtGive_TextChanged(object sender, EventArgs e)
        {
            if (txtGive.Text != "")
            {
                int i = int.Parse(txtGive.Text);
                txtReturn.Text = (i - int.Parse(txtPay.Text)).ToString();
            }
            if (txtGive.Text == "")
                txtReturn.Text = "0";
        }

        #endregion  
    }
}
